package com.dev.springBootDemo;

import java.util.function.Function;

/**
 * FunctionTest 不同类型的转换函数的使用
 */
public class FunctionTest {
 
    public static void main(String[] args) {
        // 字符串转整数并打印
        convert("18", s -> Integer.parseInt(s));
        // 整数加法运算后转字符串并打印
        convert(20, integer -> String.valueOf(integer + 18));
        // 字符串转整数，整数加法运算后转字符串并打印
        convert("245", s -> Integer.parseInt(s), integer -> String.valueOf(integer + 18));
    }
    
    /**
     * 将字符串转换为整数并打印。
     * @param s 要转换的字符串
     * @param fun 字符串到整数的转换函数
     */
    // 定义一个方法，把一个字符串转换成int类型，在控制台输出
    private static void convert(String s, Function<String, Integer> fun) {
        int i = fun.apply(s);
        System.out.println(i);
    }
    
    /**
     * 将整数进行运算后转换为字符串并打印。
     * @param i 要转换的整数
     * @param fun 整数到字符串的转换函数
     */
    // 定义一个方法，把int类型数据加上一个整数之后，转换为字符串在控制台输出
    private static void convert(int i, Function<Integer, String> fun) {
        String s = fun.apply(i);
        System.out.println(s);
    }
    
    /**
     * 将字符串转换为整数，进行运算后再转换为字符串并打印。
     * @param s 要转换的字符串
     * @param fun1 字符串到整数的转换函数
     * @param fun2 整数到字符串的转换函数
     */
    // 定义一个方法，把一个字符串转换int类型，把int类型的数据加上一个整数后，转换成字符串在控制台输出
    private static void convert(String s, Function<String, Integer> fun1, Function<Integer, String> fun2) {
        String s1 = fun2.apply(fun1.apply(s));
        System.out.println(s1);
    }
}

